package com.huangsm.book.designmodel.parallel.masterworker;

import java.util.Map;
import java.util.Set;

/**
 * 计算1-100的4次方和
 * @author huang
 * @date 2019/2/19
 */
public class PlusMain {
    public static void main(String[] args) {
        //固定使用5个Worker进程
        Master master=new Master(new PlusWorker(),5);
        for (int i = 1; i <=100; i++) {
            //提交100个子任务
            master.submit(i);
        }
        //开始计算
        master.execute();
        //最终结果
        int sum=0;
        Map<String, Object> resultMap = master.getResultMap();
        //不需要等待所有Worker执行完，即可
        while (resultMap.size()>0||!master.isComplete()){
            Set<String> keys = resultMap.keySet();
            String key=null;
            for (String s : keys) {
                key=s;
                break;
            }
            Integer i=null;
            if (key!=null)
                i= (Integer) resultMap.get(key);
            if (i!=null)
                //最终结果
                sum+=i;
            if (key!=null){
                //移除已经被计算过的项
                resultMap.remove(key);
            }
        }
        System.out.println(sum);
    }
}
